set(LLVM_LINK_COMPONENTS
  support
  FrontendOpenMP
  )

add_clang_library(clangTidyBugproneModule
  ArgumentCommentCheck.cpp
  AssertSideEffectCheck.cpp
  AssignmentInIfConditionCheck.cpp
  BadSignalToKillThreadCheck.cpp
  BoolPointerImplicitConversionCheck.cpp
  BranchCloneCheck.cpp
  BugproneTidyModule.cpp
  CastingThroughVoidCheck.cpp
  ChainedComparisonCheck.cpp
  ComparePointerToMemberVirtualFunctionCheck.cpp
  CopyConstructorInitCheck.cpp
  DanglingHandleCheck.cpp
  DynamicStaticInitializersCheck.cpp
  EasilySwappableParametersCheck.cpp
  EmptyCatchCheck.cpp
  ExceptionEscapeCheck.cpp
  FoldInitTypeCheck.cpp
  ForwardDeclarationNamespaceCheck.cpp
  ForwardingReferenceOverloadCheck.cpp
  ImplicitWideningOfMultiplicationResultCheck.cpp
  InaccurateEraseCheck.cpp
  IncorrectEnableIfCheck.cpp
  SwitchMissingDefaultCaseCheck.cpp
  IncDecInConditionsCheck.cpp
  IncorrectRoundingsCheck.cpp
  InfiniteLoopCheck.cpp
  IntegerDivisionCheck.cpp
  LambdaFunctionNameCheck.cpp
  MacroParenthesesCheck.cpp
  MacroRepeatedSideEffectsCheck.cpp
  MisplacedOperatorInStrlenInAllocCheck.cpp
  MisplacedPointerArithmeticInAllocCheck.cpp
  MisplacedWideningCastCheck.cpp
  MoveForwardingReferenceCheck.cpp
  MultiLevelImplicitPointerConversionCheck.cpp
  MultipleNewInOneExpressionCheck.cpp
  MultipleStatementMacroCheck.cpp
  NoEscapeCheck.cpp
  NonZeroEnumToBoolConversionCheck.cpp
  NotNullTerminatedResultCheck.cpp
  OptionalValueConversionCheck.cpp
  ParentVirtualCallCheck.cpp
  PosixReturnCheck.cpp
  RedundantBranchConditionCheck.cpp
  ReservedIdentifierCheck.cpp
  SharedPtrArrayMismatchCheck.cpp
  SignalHandlerCheck.cpp
  SignedCharMisuseCheck.cpp
  SizeofContainerCheck.cpp
  SizeofExpressionCheck.cpp
  SmartPtrArrayMismatchCheck.cpp
  SpuriouslyWakeUpFunctionsCheck.cpp
  StandaloneEmptyCheck.cpp
  StringConstructorCheck.cpp
  StringIntegerAssignmentCheck.cpp
  StringLiteralWithEmbeddedNulCheck.cpp
  StringviewNullptrCheck.cpp
  SuspiciousEnumUsageCheck.cpp
  SuspiciousIncludeCheck.cpp
  SuspiciousMemoryComparisonCheck.cpp
  SuspiciousMemsetUsageCheck.cpp
  SuspiciousMissingCommaCheck.cpp
  SuspiciousReallocUsageCheck.cpp
  SuspiciousSemicolonCheck.cpp
  SuspiciousStringCompareCheck.cpp
  SwappedArgumentsCheck.cpp
  TerminatingContinueCheck.cpp
  ThrowKeywordMissingCheck.cpp
  TooSmallLoopVariableCheck.cpp
  UncheckedOptionalAccessCheck.cpp
  UndefinedMemoryManipulationCheck.cpp
  UndelegatedConstructorCheck.cpp
  UnhandledExceptionAtNewCheck.cpp
  UnhandledSelfAssignmentCheck.cpp
  UniquePtrArrayMismatchCheck.cpp
  UnsafeFunctionsCheck.cpp
  UnusedLocalNonTrivialVariableCheck.cpp
  UnusedRaiiCheck.cpp
  UnusedReturnValueCheck.cpp
  UseAfterMoveCheck.cpp
  VirtualNearMissCheck.cpp

  LINK_LIBS
  clangTidy
  clangTidyCppCoreGuidelinesModule
  clangTidyUtils

  DEPENDS
  omp_gen
  ClangDriverOptions
  )

clang_target_link_libraries(clangTidyBugproneModule
  PRIVATE
  clangAnalysis
  clangAnalysisFlowSensitive
  clangAnalysisFlowSensitiveModels
  clangAST
  clangASTMatchers
  clangBasic
  clangLex
  clangTooling
  clangTransformer
  )
